import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Clase Ventilador representa un ventilador que aleja al mono de el.
 * 
 * @author (Programacion Orientada A Objetos - Gonzalez Donat - Neri Andriano) 
 * @version (15/05/12)
 */
public class Ventilador extends Obstaculo
{
    private int band;   //bandera de detección de mono cerca
    private int rango;  //rango de alcance del ventilador
    
    /**
     * Contructor para la clase ventilador
     * @param r rango de alcance de deteccion del jugador
     * @param m referencia al mono
     */
    public Ventilador(int r,Mono m)
    {
        super(m);
        band = 0;
        rango = r;
    }
    
    /**
     * Llama al metodo que hace las acciones del ventilador
     */
    public void act() 
    {
        this.turn(20);
        this.monoCerca();
        if(band==1)
            this.accion();
    }
    
    /**
     * Si ventilador no tiene referencia, busca los monos dentro del mundo.
     */
    public void asigna()
    {
        if(mono == null){
            java.util.List lista = this.getWorld().getObjects(Mono.class);
            java.util.Iterator it = lista.iterator();
            mono = (Mono)it.next();
        }
    }
    
    /**
     * Checa si el mono se encuentra lo suficiente para activar o desactivar band
     */
    public void monoCerca()
    {
            if(mono.getX()-this.getX()<rango && mono.getX()-this.getX()>rango*-1){
                if(mono.getY()-this.getY()<10 && mono.getY()-this.getY()>-20) 
                    band=1;
            }
            else
                band = 0;
    }
    
    /**
     * Es el metodo que aleja al mono del ventilador
     */
    public void accion()
    {
        int mx = mono.getX();
        int my = mono.getY();
        if(mx>this.getX())
            mono.setLocation(mx+50,my);
        if(mx<this.getX())
            mono.setLocation(mx-50,my);
    }
}
